package com.yu.crm.feign;

import com.yu.crm.domain.dto.WxCpDepartReq;
import com.yu.crm.domain.dto.WxCpUserReq;
import com.yu.crm.enums.ActionStatus;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.WxCpDepart;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.HashMap;

public interface CrmUserFeignInterface {
    final String APPLICATION_NAME = "yu-weixin-client";

   /* *//**
     * 新建用户.
     *      必传userId，name，departIds
     *
     * @param req 用户对象
     *//*
    @PostMapping(value = "/create")
    void create(@RequestBody WxCpUserReq req);

    *//**
     * 更新用户.
     *       必传userId
     *
     * @param req 用户对象
     *//*
    @PostMapping(value = "/update")
    void update(WxCpUserReq req);*/

    /**
     * 新建用户.
     *      必传userId，name，departIds
     *
     * @param req 用户对象
     */
    @PostMapping(value = "/create-user")
    void createUser(@RequestBody WxCpUserReq req);

    /**
     * 更新用户.
     *       必传userId
     *
     * @param req 用户对象
     */
    @PostMapping(value = "/update-user")
    void updateUser(@RequestBody WxCpUserReq req);

    /**
     * 删除用户/批量删除成员.
     * http://qydev.weixin.qq.com/wiki/index.php?title=管理成员#.E6.89.B9.E9.87.8F.E5.88.A0.E9.99.A4.E6.88.90.E5.91.98
     *
     * #@param agentId 应用id
     * #@param userIds 员工UserID列表。对应管理端的帐号
     * @param map
     */
    @DeleteMapping(value = "/delete-user")
    void deleteUser(@RequestBody HashMap<String,Object> map);

    /**
     * 部门管理接口 - 创建部门--并查询部门详情
     * 最多支持创建500个部门
     * @param depart 部门
     * @return 部门id
     */
    @PostMapping(value = "/create-dept")
    HashMap<String,Object> createDept(@RequestBody WxCpDepartReq depart);

    /**
     * <pre>
     * 部门管理接口 - 修改部门名.
     * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=部门管理接口
     * 如果id为0(未部门),1(黑名单),2(星标组)，或者不存在的id，微信会返回系统繁忙的错误
     * </pre>
     *
     * @param depart 要更新的部门对象，对象中的id,name必须设置
     * @throws WxErrorException 异常
     */
    @PostMapping(value = "/update-dept")
    void updateDept(@RequestBody WxCpDepartReq depart) ;

    /**
     * 部门管理接口 - 删除部门.
     *
     * #@param id 部门id
     * #@param agentId 应用id
     * @param map
     * @throws WxErrorException 异常
     */
    @DeleteMapping(value = "/delete-dept")
    void deleteDept(HashMap<String,Long> map);
}
